import shutil
import zipfile
import os


# 简洁版，仅用于递归的方式解压文件
def recursive_unzip(path, zfile):
    """解压缩文件"""
    # file_path用于解压缩文件；des_dir用于存放下一级的解压缩的同名目录
    file_path = os.path.join(path, zfile)
    des_dir = os.path.join(path, zfile[:-4])
    srcfile = zipfile.ZipFile(file_path)  # 获取解压文件信息
    for file_name in srcfile.namelist():  # 获取解压文件下的目录
        srcfile.extract(file_name, des_dir)  # 将zip文档内的指定文件解压到当前目录
        print("解压文件名称：", file_name)
        if file_name.endswith('.zip'):  # 如果是压缩文件，则进入下一级解压
            path = des_dir
            zfile = file_name
            recursive_unzip(path, zfile)


if __name__ == '__main__':
    # 文件路径 及 该路径下的压缩文件
    path = r'D:/解压之前/发票样例'
    zfiles = [file for file in os.listdir(path) if file[-3:] == 'zip']
    for file in zfiles:
        recursive_unzip(path, file)
